package com.umariana.ClinicaVeterinaria.InterfazGrafica;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;

import com.toedter.calendar.JDateChooser;
import com.umariana.ClinicaVeterinaria.mundo.Mascotas;
import com.umariana.ClinicaVeterinaria.mundo.Propietario;

import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.JTextField;

public class DialogoAgregarConsulta extends JDialog implements ActionListener{

	/**
	 * serializable
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * panel de contenido
	 */
	private final JPanel contentPanel = new JPanel();
	/**
	 * comando para el boton  agregar
	 */
	private final static String AGREGAR  = "AGREGAR";
	/**
	 * comando para el boton cancelar
	 */
	private final static String CANCELAR = "CANCELAR";
	/**
	 * seleccionador de fecha
	 */
	private JDateChooser selectorFecha;
	/**
	 * combox de horas
	 */
	private JComboBox<String> cbHoras;
	/**
	 * combox de minutos
	 */
	private JComboBox<String> cbMinutos;
	/**
	 * combox de mascotas
	 */
	private JComboBox<String> cbNombreMascotas;
	/**
	 * texta area de motivos
	 */
	private JTextArea txtMotivo;
	/**
	 * relacion con el frame principal
	 */
	private InterfazClinica principal;
	/**
	 * nombre del propietario
	 */
	private JTextField txtNombreProp;
	/**
	 * apeliidos del propietario
	 */
	private JTextField txtApellidosProp;
	/**
	 * identificacion del propietario
	 */
	private JTextField txtIdentificacionProp;

	/**
	 * contructor de la clase
	 * @param ventana frame principal
	 * @param pIdentificacion Identificacion de la persona que hace la consulta
	 */
	public DialogoAgregarConsulta(InterfazClinica ventana , String pIdentificacion) {
		
		super(ventana,true);
		principal= ventana;
		
		setTitle("Agregar Consulta");
		setBounds(100, 100, 425, 537);
		getContentPane().setLayout(new BorderLayout());
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel, BorderLayout.CENTER);
		contentPanel.setLayout(null);
		
		JLabel lblFecha = new JLabel("Fecha:  ");
		lblFecha.setBounds(10, 137, 46, 14);
		contentPanel.add(lblFecha);
		

		selectorFecha = new JDateChooser( );
        selectorFecha.setEnabled( false );
        selectorFecha.setBounds(66, 131, 227, 20);
		contentPanel.add(selectorFecha);
		{
			JLabel lblHora = new JLabel("Hora");
			lblHora.setBounds(10, 180, 46, 14);
			contentPanel.add(lblHora);
		}
		
		cbHoras = new JComboBox<String>();
		cbHoras.setBounds(66, 177, 46, 20);
		contentPanel.add(cbHoras);
		
		JLabel label = new JLabel(":");
		label.setBounds(116, 177, 10, 20);
		contentPanel.add(label);
		
		cbMinutos = new JComboBox<String>();
		cbMinutos.setBounds(122, 177, 46, 20);
		contentPanel.add(cbMinutos);
		
		JLabel lblMascota = new JLabel("Mascota: ");
		lblMascota.setBounds(10, 211, 69, 14);
		contentPanel.add(lblMascota);
		
		cbNombreMascotas = new JComboBox<String>();
		cbNombreMascotas.setBounds(66, 208, 199, 20);
		contentPanel.add(cbNombreMascotas);
		
		JLabel lblMotivo = new JLabel("Motivo: ");
		lblMotivo.setBounds(10, 250, 69, 14);
		contentPanel.add(lblMotivo);
		
		txtMotivo = new JTextArea();
		txtMotivo.setBounds(10, 275, 389, 180);
		contentPanel.add(txtMotivo);
		
		JPanel panelDatosProp = new JPanel();
		panelDatosProp.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null), "Datos del Propietario", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelDatosProp.setBounds(10, 11, 392, 109);
		contentPanel.add(panelDatosProp);
		panelDatosProp.setLayout(null);
		
		JLabel lblNombre = new JLabel("Nombre :");
		lblNombre.setBounds(10, 25, 76, 14);
		panelDatosProp.add(lblNombre);
		
		JLabel lblApellidos = new JLabel("Apellidos : ");
		lblApellidos.setBounds(10, 50, 76, 14);
		panelDatosProp.add(lblApellidos);
		
		JLabel lblIdentificacion = new JLabel("Cedula:  ");
		lblIdentificacion.setBounds(10, 75, 76, 14);
		panelDatosProp.add(lblIdentificacion);
		
		txtNombreProp = new JTextField();
		txtNombreProp.setEditable(false);
		txtNombreProp.setBounds(96, 22, 283, 20);
		panelDatosProp.add(txtNombreProp);
		txtNombreProp.setColumns(10);
		
		txtApellidosProp = new JTextField();
		txtApellidosProp.setEditable(false);
		txtApellidosProp.setBounds(96, 47, 283, 20);
		panelDatosProp.add(txtApellidosProp);
		txtApellidosProp.setColumns(10);
		
		txtIdentificacionProp = new JTextField();
		txtIdentificacionProp.setEditable(false);
		txtIdentificacionProp.setBounds(96, 72, 283, 20);
		panelDatosProp.add(txtIdentificacionProp);
		txtIdentificacionProp.setColumns(10);
        
		
		
		{
			JPanel panelBotones = new JPanel();
			panelBotones.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(panelBotones, BorderLayout.SOUTH);
			{
				JButton btnAceptar = new JButton("Agregar");
				btnAceptar.setActionCommand(AGREGAR);
				btnAceptar.addActionListener(this);
				panelBotones.add(btnAceptar);
				getRootPane().setDefaultButton(btnAceptar);
			}
			{
				JButton btnCancelar = new JButton("Cancelar");
				btnCancelar.setActionCommand(CANCELAR);
				btnCancelar.addActionListener(this);
				panelBotones.add(btnCancelar);
			}
		}
		
		llenarCombox(pIdentificacion);
		actulizarDatosPropietario(pIdentificacion);
	}

	/**
	 * llena los combox del dialogo
	 * @param pIdentificacion identificacion del propietario que quiere hacer la consulta
	 */
	public void llenarCombox(String pIdentificacion)
	{
		for (int i = 0; i < 25; i++) {
			cbHoras.addItem(i+"");
		}
		for (int i = 0; i < 61; i++) {
			cbMinutos.addItem(i+"");
		}
		ArrayList<Mascotas> listaMascotas = principal.buscarClientePorIdentificacion(pIdentificacion).getMascotas();
		for (int i = 0; i < listaMascotas.size(); i++) {
			Mascotas miMascotas =listaMascotas.get(i);
			cbNombreMascotas.addItem(miMascotas.getNombre());
		}
	}
	/**
	 * actualiza la informacion del propietario 
	 * @param pIdentificacion identifiacion del proietario
	 */
	public void actulizarDatosPropietario(String pIdentificacion)
	{
		Propietario miPropietario = principal.buscarClientePorIdentificacion(pIdentificacion);
		txtNombreProp.setText(miPropietario.getNombres());
		txtApellidosProp.setText(miPropietario.getApellidos());
		txtIdentificacionProp.setText(miPropietario.getIdentificacion());
	}
	
	
	@Override
	public void actionPerformed(ActionEvent arg0) 
	{
		if(arg0.getActionCommand().equals(AGREGAR))
		{
			boolean validacion = true;
			
			if(txtMotivo.getText().equalsIgnoreCase(""))
			{
				JOptionPane.showMessageDialog(null, "El motivo no puede ser vacio","Error",JOptionPane.ERROR_MESSAGE);
				validacion=false;
			}
			
			
			if(validacion)
			{
			Date fechaCita = selectorFecha.getDate( );
			@SuppressWarnings("deprecation")
			String fecha1=fechaCita.toLocaleString().substring(0,11);
			String fecha2=fecha1.replace('/', '-');
		    String[] fecha3=fecha2.split("-");
			String fechaF = fecha3[2]+"-"+fecha3[1]+"-"+fecha3[0];
			
			String horaF = cbHoras.getSelectedItem().toString()+":"+cbMinutos.getSelectedItem().toString()+":00";
			String nombreMascotaF = cbNombreMascotas.getSelectedItem().toString();
			
			principal.agregarNuevaConsulta(txtIdentificacionProp.getText(),fechaF,horaF,nombreMascotaF,txtMotivo.getText());
			dispose();
			JOptionPane.showMessageDialog(null, "Consulta Agregada Correctamenta !!","Agregar Consulta",JOptionPane.INFORMATION_MESSAGE);
			}
			
		}
		if(arg0.getActionCommand().equals(CANCELAR))
		{
			 
			 dispose();
			
		}
		
		}
}
